home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ask
/
ksd
/
source
/
cp@key.c
next >
Wrap
Text File
|
1998-09-29
|
2KB
|
95 lines
/* KSDサポート関数利用サンプルプログラム */
// "@KEY"(@KSD)操作型
#include <stdio.h>
#include "ksd.h"
#include "amacro.h"
/* typedef unsigned char unchar; */
/* gcd cp@key.c ksd.a : うちの環境でのコンパイル方法 */
#define LMAX 1024 /* >KSD_ST_SIZE */
main(int argc,unchar *argv[])
{
FILE *fp;
int i,factive,fclear,flook;
unchar *fname;
unchar line[LMAX];
if (!KSDCheck()) {
prints("KSDが組み込まれていません\n");
exit(3);
}
/* オプションチェック初期化 */
clear_param();
if (helpcom(argc,argv,0,"Cp@Key","[/A /P /C /L] filename")) exit(255);
// 強制的に活動状態にする
factive=0;
if (check_param2("A",argv,argc,0)) factive=1;
if (check_param2("P",argv,argc,0)) factive=2;
flook=check_param2("L",argv,argc,0);
// キーバッファーをクリアしてから書き込む
fclear=check_param2("C",argv,argc,0);
/* オプションチェック */
i=check_param_error(argv,argc);
if (i) {
printsn("\aオプションエラーです:",argv[i]);
exit(4);
}
i=getfname(argc,argv,1,NULL);
if (i==0) {
prints("ファイルを指定してください\n");
exit(1);
}
fname=argv[i];
/* 組み込みを確認してからKDS関数を呼び出すので、エラーチェックは省く */
if (fclear) KSDSetStatus(KSD_Clear_S); /* キーバッファーをクリアする */
KSDReadStatus(line);
if (flook) {
unchar devname[8+1];
printsn("KSD状態:",line);
KSDDevName(devname);
printsn("デバイス名:",devname);
}
if (line[0]==KSD_ST_Pause) {
// 休止状態にある
if (factive) {
if (factive==1) {
/* 強制活動状態にする */
KSDSetStatus(KSD_Active_S);
} // 休止のまま
} else {
prints("KSDは休止状態です。一時活動状態にしますか?(Y/N):");
i=getch();
if (i==0x1b) {
printc('\n');
exit(255);
}
if (i=='y'||i=='Y') {
KSDSetStatus(KSD_OnceActive_S); /* 一時活動状態にする */
prints("Y\n");
} else prints("N\n");
}
}
// file open (text mode)
fp=fopen(fname,"rt");
if (fp==NULL) {
printsn("ファイルが見つかりません:",fname);
exit(2);
}
while (fgets(line,LMAX,fp)!=NULL) {
// \n=0x0aはファイルでは改行だが、キーではただの^Jなので
// キーの改行=0x0dに変換する
{int len;
len=strlen(line);
if (line[len-1]=='\n') line[len-1]=0x0d;
}
KSDSetData(line);
}
fclose(fp);
exit(0);
}